// 请求响应参数（不包含data）
export interface Result {
  code: number
  msg: string
}

// 请求响应参数（包含data）
export interface ResultData<T = any> extends Result {
  data: T
}

// 分页响应参数
export interface ResPage<T> {
  records: T[]
  // list: T[]
  current: number
  // pageNum: number
  size: number
  // pageSize: number
  total: number
  pages?: number
}

// 分页请求参数
export interface ReqPage {
  // pageNum: number
  // pageSize: number
  current: number
  size: number
  order?: string
}

// 文件上传模块
export namespace Upload {
  export interface ResFileUrl {
    fileUrl: string
  }
  export interface ResFile {
    bucketName?: string
    fileId?: string
    fileName?: string
  }
}

// 登录模块
export namespace Login {
  export interface ReqLoginForm {
    username: string
    password: string
  }
  export interface ResLogin {
    access_token: string
  }
  export interface ResAuthButtons {
    [key: string]: string[]
  }
}

export interface Dept {
  id?: string
  name?: string
  appcode?: string
  level?: number
  parentId?: string
  ext?: string
  sortOrder?: number
  createTime?: string
  updateTime?: string
  createBy?: string
  UpdateBy?: string
}

export interface DeptNode {
  id: string
  name?: string
  level?: number
  parentId?: string
  ext?: string
  sortOrder?: number
}

export interface AreaNode {
  id: string
  name?: string
  level?: number
  parentId?: string
  ext?: string
  sortOrder?: number
}

export interface SelectOption {
  value: string
  label: string
}

export interface TreeNode {
  id: string
  name?: string
  parentId?: string
  children?: TreeNode[]
  data?: any
  disabled?: boolean
}
